package br.com.salao.model;

import java.util.List;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;

import org.apache.log4j.Logger;

import br.com.salao.entity.Bairro;
import br.com.salao.session.BairroBase;
import br.com.salao.util.Utils;

public class BairroModel {

	private Logger logger =  Logger.getLogger(BairroModel.class.getName());


	public Bairro buscarBairroPorNome(Bairro bairro) throws Exception{

		try{
			BairroBase bairroBase  = getBean();
			return bairroBase.buscarBairroPorNome(bairro);	
		} catch (Exception e) {

			StringBuffer sb = new StringBuffer();
			sb.append(e.getMessage());
			sb.append(e.getCause());
			logger.debug(sb.toString(),e);

			throw e;
		}
	}

	public Bairro incluir(Bairro bairro) throws Exception{
		try{
			BairroBase bairroBase  = getBean();
			return bairroBase.incluir(bairro);
		} catch (Exception e) {

			StringBuffer sb = new StringBuffer();
			sb.append(e.getMessage());
			sb.append(e.getCause());
			logger.debug(sb.toString(),e);

			throw e;
		}
	}

	public List<Bairro> listarBairroPorIdCidade(int idCidade) throws Exception{
		
		try{
			BairroBase bairroBase  = getBean();
			return bairroBase.listarBairroPorIdCidade(idCidade);
			
		} catch (Exception e) {

			StringBuffer sb = new StringBuffer();
			sb.append(e.getMessage());
			sb.append(e.getCause());
			logger.debug(sb.toString(),e);
			throw e;
		}
	}
	
	public List<Bairro> buscarBairrosDeEstabelecimentosCadastrados() throws Exception{
		
		try{
			BairroBase bairroBase  = getBean();
			return bairroBase.buscarBairrosDeEstabelecimentosCadastrados();
			
		} catch (Exception e) {

			StringBuffer sb = new StringBuffer();
			sb.append(e.getMessage());
			sb.append(e.getCause());
			logger.debug(sb.toString(),e);
			throw e;
		}
	}
	
    public BairroBase getBean() throws Exception {
    	
        Properties prop = Utils.getProperties();     
        Context ctx = new InitialContext(prop); 
        Object ref = ctx.lookup(prop.getProperty("BAIRRO_LOOKUP"));       
      
        return (BairroBase)PortableRemoteObject.narrow(ref, BairroBase.class);
    }
}
